草庐IT

C++ unique_ptr 和映射

全部标签

c++ - 任意类型的映射 vector

我需要存储不同类型的列表vector,每个vector都由一个字符串标识符引用。现在,我使用std::map和std::string作为键,boost::any作为它的值(示例实现postedhere)。尝试在所有存储的vector上运行一个方法时,我遇到了困难,例如:std::map::iteratorit;for(it=map_.begin();it!=map_.end();++it){it->second.reserve(100);//FAIL:referstoboost::anynotstd::vector}我的问题:是否可以将boost::any转换为任意vector类型以便

c++ - 具有两个键值的映射

我有一项作业需要检查文件夹中的所有文件。对于每个文件,我需要知道每个唯一的文件扩展名、每个唯一的文件扩展名有多少个文件,以及每个唯一的文件扩展名的总大小。我必须能够使用文件扩展名或文件扩展名的总大小对此进行排序。我首先想到的是map。这将跟踪每个唯一的文件扩展名和找到该文件扩展名的次数。我现在如何将文件扩展名的总大小关联到我的map?所以例如我需要输出是这样的:使用文件扩展名进行排序.cpp:1:3400.exe:3:3455600.mp4:25:200000404使用总文件扩展名大小进行排序.mp4:25:200000404.exe:3:3455600.cpp:1:3400这是经过一

c++ - 从源代码编译后未安装 boost ptr_container 库

我已经将boost库从以前的1.54(svn源)更新到1.57(git源)。尽管我使用了相同的./b2参数,但目标目录不包含ptr_container库。具有克隆存储库的目录在此路径上正确包含ptr_container库:boost_git/libs/ptr_container我正在使用以下命令构建它:./b2--install--prefix=$SHL_PATH/boost-sNO_BZIP2=1-sNO_ZLIBruntime-link=sharedlink=shared-j2install但没有成功。编辑:似乎只有从git构建时才会出现问题。当我从boost站点下载zip包时,目

c++ - 不完整类型的 std::unique_ptr 无法编译

我将pimpl-idiom与std::unique_ptr结合使用:classwindow{window(constrectangle&rect);private:classwindow_impl;//definedelsewherestd::unique_ptrimpl_;//won'tcompile};但是,我在的第304行收到关于使用不完整类型的编译错误:Invalidapplicationof'sizeof'toanincompletetype'uixx::window::window_impl'据我所知,std::unique_ptr应该能够与不完整的类型一起使用。这是lib

c++ - 从 boost::shared_ptr<string> 返回 C 字符串

我将一些C++代码包装在函数中,以便使C++方法在C中可用。C++API方法返回boost::shared_ptr通常的对象。我在C++中导出的函数如下所示:extern"C"constchar*Hazelcast_Map_get_int_string(Hazelcast_Client_t*hazelcastClient,constchar*mapName,intkey,char**errptr){IMapmap=hazelcastClient->client->getMap(mapName);boost::shared_ptrvalue=map.get(key);string*str

c++ - 为什么 std::shared_ptr 提供 operator<<?

std::shared_ptr提供operator它只是写出它的地址。没有operator>>只记录地址,不记录内容。我想知道它在哪些情况下有用。 最佳答案 因为是一个潜在有用的东西在原始指针上执行。这是安全的,原始指针就是这样做的,shared_ptr在某些情况下应该用于替换原始指针。相比之下,>>很少有意义。与原始指针不同,将指针值存储在共享指针中会取得它的所有权。我可以some_stream>>raw_ptr除非我用ptr做些什么没有任何问题;有点奇怪,但没有立即中断。对shared_ptr做同样的事情只有在极其深奥的情况下才

c++ - 不完整类型的 std::unique_ptr 无法编译

我将pimpl-idiom与std::unique_ptr结合使用:classwindow{window(constrectangle&rect);private:classwindow_impl;//definedelsewherestd::unique_ptrimpl_;//won'tcompile};但是,我在的第304行收到关于使用不完整类型的编译错误:Invalidapplicationof'sizeof'toanincompletetype'uixx::window::window_impl'据我所知,std::unique_ptr应该能够与不完整的类型一起使用。这是lib

c++ - 创建索引有序映射

过去几天,我浏览了这里和类似的网站,花了很多时间试图找到解决方案,并想寻求建议。我得出了一个令人失望的结论,即如果不进入C++的boost库,就不可能创建一个保留索引顺序的关联容器。更清楚和具体的是,我需要的是一个map,它可以使用operator[key]进行查找,但也可以在为迭代目的添加元素的顺序中建立索引。今天早上我决定我需要自己写一个,我已经尝试了一些使用map的map和成对的vector等的方法。但实际上没有任何效果,并且令人惊讶地获得了我正在寻找的所有功能用这种语言不容易实现。我一定是错的吧?有没有其他人有过需要此功能或熟悉此概念的经验,可以为我指明我正在寻找的正确方向?非

c++ - GCC 中优先队列的奇怪 shared_ptr 比较器选择

我有一个包含在std::shared_ptr中的类,我想在std::priority_queue的帮助下选择前k个对象.所以,我定义operator并期待一切都会好起来的。但事实并非如此。默认情况下(使用gcc)std::priority_queue使用默认比较器std::shared_ptr,比较地址。但是如果我对std::vector使用std::sort而没有指定比较器我的operator行为是不同的将会被使用。这有点出乎意料且不一致。代码示例:structdocument{floatrank;document(floatrank):rank(rank){}};usingdoc_

c++ - 使用shared_ptr实现RCU(读取-复制-更新)?

我对用户空间RCU(读取-复制-更新)非常感兴趣,并尝试通过tr1::shared_ptr模拟一个,这是代码,虽然我真的是并发编程的新手,但会有高手帮我review吗?基本思路是,reader调用get_reading_copy()以获得当前protected数据的指针(假设它是第一代,或G1)。writer调用get_updating_copy()以获得G1的拷贝(假设它是G2),并且只允许一个writer进入临界区。更新完成后,writer调用update()进行交换,使m_data_ptr指向G2数据。正在进行的读者和作者现在持有G1的shared_ptr(s),并且读者或作者最